import { UserModule } from './userModule.js';
import { PostModule } from './postModule.js';
import { CategoryModule } from './categoryModule.js';
import { CommentModule } from './commentModule.js';

// 主应用模块
export class AppModule {
  constructor() {
    // 初始化各功能模块
    this.userModule = new UserModule();
    this.postModule = new PostModule();
    this.categoryModule = new CategoryModule();
    this.commentModule = new CommentModule();
    
    // 应用状态
    this.state = {
      activeTab: 'dashboard',
      loading: false,
      error: '',
      message: '',
      userSearch: '',
      postSearch: ''
    };
  }
  // 初始化应用
  async init() {
    console.log('开始初始化应用...');
    await this.loadData();
    console.log('应用初始化完成');
  }

  // 加载所有初始数据
  async loadData() {
    this.state.loading = true;
    console.log('开始加载数据...');
    try {
      await Promise.all([
        this.userModule.loadUsers(),
        this.postModule.loadPosts(),
        this.categoryModule.loadCategories(),
        this.commentModule.loadComments()
      ]);
      console.log('数据加载完成');
    } catch (error) {
      this.state.error = '加载数据失败: ' + error.message;
      console.error('加载数据失败:', error);
    } finally {
      this.state.loading = false;
    }
  }

  // 切换标签页
  switchTab(tabName) {
    this.state.activeTab = tabName;
    this.state.error = '';
    this.state.message = '';
    console.log('切换标签页到:', tabName);
  }

  // 获取最近的文章
  getRecentPosts(count = 5) {
    if (!this.postModule || !this.postModule.posts) {
      console.log('文章模块未初始化');
      return [];
    }
    return [...this.postModule.posts]
      .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))
      .slice(0, count);
  }

  // 获取最近的评论
  getRecentComments(count = 5) {
    if (!this.commentModule || !this.commentModule.comments) {
      console.log('评论模块未初始化');
      return [];
    }
    return [...this.commentModule.comments]
      .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))
      .slice(0, count);
  }

  // 获取过滤后的用户列表
  getFilteredUsers() {
    if (!this.userModule || !this.userModule.getFilteredUsers) {
      console.log('用户模块未初始化');
      return [];
    }
    return this.userModule.getFilteredUsers(this.state.userSearch);
  }

  // 获取过滤后的文章列表
  getFilteredPosts() {
    if (!this.postModule || !this.postModule.getFilteredPosts) {
      console.log('文章模块未初始化');
      return [];
    }
    return this.postModule.getFilteredPosts(this.state.postSearch);
  }
}